Caching infrastructure

ABSTRACT

Example systems and methods are directed at maintaining and retrieving presence metadata. One example method includes receiving a request from a first client to edit a document file, and sending short-term check out metadata to the first client to begin an editing session. The method also includes writing the transition ID to a transition table stored in a cache, wherein the presence of another transition ID in the cache indicates that a document has switched from a single-client mode to a multi-client mode. An example system includes a processing unit operative to receive a document, the document including short-term check out metadata indicating an editing session has begun, ping a cache to determine if another transition ID is stored in the cache, and send a transition ID to a transition table stored in a cache to switch from a single-client mode to a multi-client mode.

BACKGROUND

In a collaborative environment, some computer applications allowmultiple clients to simultaneously edit a document. As multiple clientsare editing the document, a server may maintain a copy of the document.The server may need to continually update the copy of the document toreflect the current state of the document. This can lead toinefficiencies.

For example, even with only a single client editing the document, theclient's application may need to continuously update the server to allowthe transition to multi-party editing when it occurs. This can increaseserver load, thereby causing a degradation in performance.

SUMMARY

Example systems and methods described herein relate to a cachinginfrastructure.

According to one aspect, an example method for retrieval of presencemetadata includes: receiving a request from a first client to edit adocument file; sending short-term check out metadata to the first clientto begin an editing session; and writing the transition ID to atransition table stored in a cache, wherein the presence of anothertransition ID in the cache indicates that a document has switched from asingle-client mode to a multi-client mode.

According to another aspect, an example system includes a cacheinfrastructure for retrieval of presence metadata. The system includes amemory storage unit, and a processing unit coupled to the memory storageunit, wherein the processing unit is operative to receive short-termcheck out metadata from a first client to begin an editing session, adda transition ID to the short-term check out metadata, write thetransition ID to a transition table stored in a cache, and switch from asingle-client mode to a multi-client mode. Switching from thesingle-client mode to the multi-client mode comprises the processingunit being operative to notice when the first client attempts to takeanother short-term lock on the document and seeing that that a secondclient has already received the document. The processing unit isoperative to determine if the multi-client mode is in progress bychecking a database, receive a ping from the first client to determineif the transition ID is in the cache, and when the transition ID is notin the cache, receive pings from the first client at regular intervals,and save the document to the server a plurality of times withoutincurring any reads/writes to the database, and, when the transition IDis in the cache, receive a ping from the first client to collect a locktable from the database to identify the second client, and receive thesecond client's lock information by receiving pings that do not carrylock information.

According to yet another aspect, an example client computer forretrieval of metadata relating to a multi-client editing sessionincludes a memory unit, and a processing unit operative to receive adocument from a storage device, the document comprising short-term checkout metadata indicating an editing session has begun, ping a cache todetermine if another transition ID is stored in the cache, and send atransition ID to a transition table stored in a cache when the anothertransition ID is not stored in the cache to switch from a single-clientmode to a multi-client mode when the another transition ID is stored inthe cache.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter. Nor is this Summaryintended to be used to limit the claimed subject matter's scope.

DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments are described with referenceto the following figures, wherein like reference numerals refer to likeparts throughout the various views unless otherwise specified.

FIG. 1 is a schematic block diagram illustrating an example authoringsystem;

FIG. 2 is a schematic block diagram illustrating the authoring system ofFIG. 1 in which a document stored on first computing device can includecontent and metadata;

FIG. 3 is a schematic block diagram of an example lock table;

FIG. 4 is a schematic block diagram of an example authoring environmentincluding a first computing device on which a master copy of a documentto be authored is to be stored;

FIG. 5 is a schematic block diagram of an example client computingsystem configured to implement an authoring environment;

FIG. 6 is a flowchart illustrating an example caching processimplemented by an authoring application to recognizes a single ormultiple clients editing a document; and

FIG. 7 is a flowchart of an example subroutine used in the method ofFIG. 6 for writing a transition ID to a transition table.

DETAILED DESCRIPTION

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustrations specific embodiments or examples. While thedisclosure will be described in the general context of program modulesthat execute in conjunction with an application program that runs on anoperating system on a computer system, those skilled in the art willrecognize that the disclosure also may be implemented in combinationwith other program modules. The embodiments described herein may becombined and other embodiments may be utilized without departing fromthe spirit or scope of the present disclosure. The following detaileddescription is therefore not to be taken in a limiting sense, and thescope of the disclosure is defined by the appended claims and theirequivalents.

Embodiments of the present disclosure provide an environment in whichmultiple clients can collaboratively author a document while consumingminimal server resources. In example embodiments, when a coauthoringcapable application is editing a document, the application addscoauthoring metadata to the document and keeps a server copy of the fileupdated with the latest metadata. The coauthoring metadata and servercopy allows seamlessly transitions from a single client to amulti-client editing state and vice versa. To keep conflicts to aminimum, the coauthoring metadata is uploaded to the server. When a newclient opens the document, the client is notified of the areas of thedocument where other clients are working.

FIG. 1 illustrates an example authoring system 100 having features thatillustrate examples aspects of the disclosure. The authoring system 100includes a storage device 120 storing a master copy of a document 150.In one embodiment, the storage device 120 may include, but not limitedto, a server, a client computer, or other computing device. In anotherembodiment, the storage device 120 can include one or more storagedevices (e.g., a network of computing devices).

The authoring system 100 also includes at least one client computingdevice 110 that is communicatively coupled to the storage device 120.Each of the client computing devices 110 can edit the document 150 bycreating a client copy 155 of the document 150 and editing the clientcopy 155. The client copies 155 of the document 150 are synchronizedwhen the client computing devices 110 periodically send to the storagedevice 120 updates to be shared with the other client computing devicesand periodically obtain from the storage device 120 updates from otherclient computing devices.

As the term is used herein, a client computing device 110 includes anycomputing device that obtains a client copy of a document to be authoredfrom a master copy of the document. The client computing device 110 canbe different from the storage device 120 or can include a differentclient account implemented on the storage device 120. In one embodiment,a computing device that acts as a storage device 120 for one documentmay act as a client computing device 110 for a different document andvice versa.

In the example shown, four client computing devices 110A, 110B, 110C,and 110D are communicatively coupled to the storage device 120. In otherembodiments, however, any number of computing devices 110 may be coupledto the storage device 120. In the example shown, each client computingdevice 110A, 110B, 110C, 110D can send to the storage device 120 updatesgenerated by the client of the client computing device and can requestfrom the storage device 120 updates generated by the clients of theother client computing devices. In one embodiment, the storage device120 can be a server computing device and the client computing devices110A, 110B, 110C, 110D can be client computing devices. Other systemconfigurations are possible. For example, in an alternative embodiment,multiple server computing devices can be used.

As shown in FIG. 2, the document 150 stored on the storage device 120can include content 152 and metadata 154. Authoring applications 130 onthe client computing devices 110 process and manipulate the content andmetadata of the client copies 155 of the document 150. In someembodiments, metadata 154 can be stored separately from content 152. Forexample, content 152 can be stored in the document 150 and metadata 154can be stored in a table (see FIG. 3) separate from the document 150. Inother embodiments, however, the metadata 154 can be stored within thedocument 150.

In general, the client computing devices 110 can synchronize updates tothe content 152 separately from updates to the metadata 154. In general,metadata updates 154 are automatically synchronized among the storagedevice 120 and client computing devices 110, whereas content updates 152from each client computing device 110 are synchronized at the request ofthe respective client.

Referring to FIG. 3, lock metadata can be stored in a variety ofdifferent formats. For example, the lock metadata of FIG. 3 is stored ina table format 300. The lock table 300 of FIG. 3 includes a list ofclients, each of whom is identified with a client identifier (e.g., anidentification number) that is uniquely assigned to the client. Dataunits to be locked are identified with unit identifiers (e.g.,identification numbers) that are uniquely assigned to each data unitwithin a document. The lock table 300 associates the unit identifiers ofthe one or more data units to be locked with the client identifiers ofthe clients who own the locks.

For example, in the lock table 300, data units 312 and 314 areassociated with a first client 310. Other clients, therefore, areinhibited from editing data units 312 and 314. Data unit 322 isassociated with client 320. Other clients, including the first client310, therefore, are inhibited from editing data unit 322. The fourthclient 340 has not locked any portion of the document and so is notassociated with any unit identifiers. In other embodiments, however,lock metadata can be stored in a different format or within thedocument. For example, the lock table 300 can be arranged by unitidentifier instead of by client identifier.

Presence metadata also can be stored in a variety of formats. Forexample, presence metadata can be stored in the lock table 300 of FIG.3. In another embodiment, however, presence metadata can be stored in aseparate table or in a different format. Presence metadata includes theclient identifier of each client that is currently accessing thedocument or that has staked a claim (e.g., generated a content lock) ona data unit of the document. For example, a metadata table, such as thelock table 300, can store the client identifier of each client having aclaim to at least one data unit of the document. Like lock metadata,presence metadata can be synchronized automatically.

FIGS. 4 and 5 provide greater detail in how coauthoring between theclient copy and the master copy of the document is implemented by aclient computing device. FIG. 4 is a schematic block diagram of anauthoring system 400 including a storage device 420 on which a mastercopy of a document to be authored is to be stored. The authoring system400 also includes at least one client computing device 410communicatively coupled to the storage device 420.

The client computing device 410 includes an authoring application 412configured to provide an authoring environment in which a client cancreate and/or manipulate a document to be authored. The client computingdevice 410 also includes a cache 414, a layer object (“LO”) 416, and asynchronization manager (“sync manager”) 418. The cache 414 stores aclient copy of the document to be authored. The cache 414 also storesthe metadata, including lock and presence metadata, associated with thedocument. Updates to the content and metadata of the document also canbe stored in the cache 414.

The layer object 416 provides an interface between the authoringapplication 412 and the cache 414. The layer object 416 also provides aninterface between the authoring application 412 and the sync manager418. The sync manager 418 communicates with the storage device 420 andprovides an interface between the storage device 420 and the cache 414.For example, the sync manager 418 can send updates to and obtain updatesfrom the storage device 420 and the cache 414.

In general, an authoring environment having features that are examplesof aspects in accordance with the principles of the disclosure can beimplemented on a client computing device (e.g., a personal computer, aserver computer, a notebook computer, a PDA, a Smartphone, or any othersuch computing device). A non-limiting embodiment of a client computingsystem 500 configured to implement an authoring environment is describedherein with reference to FIG. 5.

In FIG. 5, the exemplary computing system 500 for implementing theprinciples of the disclosure includes a client computing device, such asclient computing device 510. In a basic configuration, the clientcomputing device 510 typically includes at least one processing unit 515for executing applications and programs stored in system memory 520.Depending on the exact configuration and type of computing device 510,the system memory 520 may include, but is not limited to, RAM, ROM,EEPROM, flash memory, CD-ROM, digital versatile disks (DVD) or otheroptical storage devices, magnetic cassettes, magnetic tape, magneticdisk storage or other magnetic storage devices, or other memorytechnology.

System memory 520 typically stores an operating system 522, such as theWINDOWS® operating systems from Microsoft Corporation of Redmond, Wash.,suitable for controlling the operation of the computing device 510.System memory 520 also may include a document cache 526 in which aclient copy 527 of a document can be stored. Metadata 529 of thedocument also can be stored within the client cache 526.

The system memory 520 also may store one or more software applications,such as authoring applications 524 for creating and editing documents.One non-limiting example of an authoring application 524 suitable forauthoring documents in accordance with the principles of the presentdisclosure is Word word processing software from Microsoft Corporation.Other non-limiting examples of authoring applications includePOWERPOINT® presentation software and VISIO® drawing and diagrammingsoftware, both also from Microsoft Corporation. Other softwareapplications can also be used.

Computing device 510 also may have input device(s) 530, such as akeyboard, mouse, pen, voice input device, touch input device, etc., forentering and manipulating data. Output device(s) 535, such as a displayscreen, speakers, printer, etc., also may be included. These outputdevices 535 are well known in the art and need not be discussed atlength herein.

The computing device 510 also may contain communication connections 540that allow the device 510 to communicate with other computing devices,for example, the storage device 420 of FIG. 4, over a network in adistributed computing environment (e.g., an intranet or the Internet).By way of example, and not limitation, communication device media 540includes wired media such as a wired network or direct-wired connection,and wireless media, such as acoustic, RF, infrared and other wirelessmedia.

Turning now to FIG. 6 is a flow chart setting forth the general stagesinvolved in a method 600 consistent with an embodiment of the disclosurefor retrieving presence metadata. Method 600 may be implemented using acomputing device 510 as described in above with respect to FIG. 5. Waysto implement the stages of method 600 will be described in greaterdetail below. Method 600 may begin at starting block 605 and proceed tostage 610 where computing device 510 may receive metadata 529. Forexample, a client using computing device 510 (e.g. a client computer)may open a document (e.g. 150). Opening the document may cause computingdevice 510 to receive short-term check out metadata for the document.

From stage 610, where computing device 510 received metadata 529, method600 may advance to stage 620 where computing device 510 may add atransition ID to the metadata 529.

Once computing device 510 adds the transition ID to metadata 529 instage 620, method 600 may continue to subroutine 630 where computingdevice 510 may write the transition ID to a transition table stored incache 526. For example, writing the transition ID to metadata 529 mayindicate more than one client is editing the document (i.e. switchingfrom a single-client mode to a multi-client mode) as show in FIG. 7.

In one example, the transition ID is a unique number, such as a GloballyUnique Identifier (GUID—i.e., a pseudo-random 128-bit number). Thetransition table is a list of the transition IDs. The transition tablecan also include an expiration date for each transition ID. Theexpiration date can be used to clear a transition ID when a clientforces creation of a transition ID and thereupon abandon editing of thedocument without notification. Other configurations are possible.

From subroutine stage 630, where computing device 510 may write thetransition ID to a transition table stored in cache 526, method 600 mayadvance to stage 640 where computing device 510 may ping storage device120 (e.g. a server) to determine if the transition ID is in cache 526.

When the transition ID is not in the cache, computing device 510 mayping the server at regular intervals, and save the document to theserver a plurality of times without incurring any reads/writes to adatabase that stores presence information.

When the transition ID is in the cache, computing device 510 may pingthe server to collect a lock table from a database to identify a newclient, and in a separate web service request, submitting the client'slock information. Computing device 510 may then delete the transition IDfrom the transition table.

Computing device 510 may also submit a client's lock information.Submitting the client's lock information may include pinging the server.For example, the computing device can submit “am I alone” pings to theserver, wherein the “am I alone” pings do not carry lock information. An“am I alone” ping is simply a ping to the server or other storage devicewherein computing device 510 is requesting information to determine ifthe document is being edit by another client or if another client hadbegun editing the document after the client began editing the document.

Every time each client downloads presence metadata, the number ofclients in an editing session and the last time each client updatedtheir presence information (e.g., transition ID, transition table,database, etc.) may be checked (among other things), at regularintervals. If the presence information has not been updated by anyclient in a configurable window of time, it is considered a violent exitfrom the session. Any client who first observes this exit can delete theclient from the presence information. Further, the delete operationshould be a graceful merge so that any other client who also made thesame observation can re-request the omissions which results in a no-opin the server.

If the presence information reflects only one client (which should bethe examining client, i.e., computing device 510), the following actionsmay be done to minimize problems associated with the timing of thechange of state of the document: 1) clear-up the presence table so itreflects the state as a single client mode; 2) delete the transition IDto the transition table; and 3) start the “am I alone” pings at regularintervals.

The transition ID in the transition table indicates another user hasjoined the coauthoring session and is in transition back to multi-userauthoring. When the system transitions back to one client editing, thatclient starts sending the “am I alone” pings. The “am I alone” pingsreturned to the client indicate the client is alone until another clientputs the transition ID back in the transition table.

Once computing device 510 pings storage device 120 in stage 640, method600 may continue to stage 650 where computing device 510 may refreshcache 526.

For example, computing device 510 may refresh cache 526 by updating thetransition table stored in cache 526. For instance updating thetransition table may include pinging cache 526 to check for the presenceof the transition ID in cache 526. When the transition ID is not presentin cache 526, a determination may be made to see if cache 526 has beenrefreshed within a predetermined time interval. When cache 526 has beenrefreshed within the predetermined time interval, a response to the pingmay be sent from cache 526. When cache 526 has not been refreshed withinthe predetermined time interval, the transition table corresponding tothe document's content database may be fetched. Once computing device510 has refresh cache 526 in stage 650, method 600 may then end at stage660.

FIG. 7 is a flow chart showing example stages of subroutine 630.Subroutine 630 begins at starting block 705 and proceeds to stage 710where computing device 510 may determine if the document is alreadybeing used in the multi-client mode. For example, computing device 510may determine if the document is in multi-client mode by checking adatabase. If computing device 510 determines the document is not inmulti-client mode in stage 710, subroutine 630 may proceed to stage 715where computing device 510 switch from a single-client mode to amulti-client mode.

For example, switching from single-client mode to multi-client mode maybe initiated by a second client attempting to take another short-termlock on the document and seeing that that the client has alreadyreceived the document. Switching to multi-client mode may includecomputing device 510 receiving the document and transition ID at cache526. In this instance computing device 510 may actually be a secondclient computing device. After receiving the transition ID, computingdevice 510 may write the transition ID to the transition table, andwrite to the database information indicating the second client hasjoined the editing session and is now working on the document.

If computing device 510 determines the document is in multi-client modein stage 710, subroutine 630 may continue to stage 720 where computingdevice 510 may adds the client as the “nth” client. For example, addingthe “nth” client may include computing device 510 receiving the documentand transition ID, and writing to the database information indicatingthe “nth” client has joined the editing session.

From stage 715 where computing device 510 switches from single-clientmode to multi-client mode or stage 720 where computing device 510 addsthe “nth” client, subroutine 630 may advance to stage 730 wherecomputing device 510 may return to stage 640 (FIG. 6).

Reference may be made throughout this specification to “one embodiment,”“an embodiment,” “embodiments,” “an aspect,” or “aspects” meaning that aparticular described feature, structure, or characteristic may beincluded in at least one embodiment of the present disclosure. Thus,usage of such phrases may refer to more than just one embodiment oraspect. In addition, the described features, structures, orcharacteristics may be combined in any suitable manner in one or moreembodiments or aspects. Furthermore, reference to a single item may meana single item or a plurality of items, just as reference to a pluralityof items may mean a single item. Moreover, use of the term “and” whenincorporated into a list is intended to imply that all the elements ofthe list, a single item of the list, or any combination of items in thelist has been contemplated.

Embodiments of the disclosure may be implemented as a computer process(method), a computing system, or as an article of manufacture, such as acomputer program product or computer readable media. The processes(programs) can be implemented in any number of ways, including thestructures described in this document. One such way is by machineoperations, of devices of the type described in this document. Anotheroptional way is for one or more of the individual operations of themethods to be performed on a computing device in conjunction with one ormore human operators performing some of the operations. These humanoperators need not be collocated with each other, but each can be onlywith a machine that performs a portion of the program.

The computer program product may be a computer storage media readable bya computer system and encoding a computer program of instructions forexecuting a computer process. The computer program product may also be apropagated signal on a carrier readable by a computing system andencoding a computer program of instructions for executing a computerprocess. The term computer readable media as used herein includes bothstorage media and communication media.

Those skilled in the art will appreciate that the disclosure may bepracticed with other computer system configurations, including hand-helddevices, multiprocessor systems, microprocessor-based or programmableconsumer electronics, minicomputers, mainframe computers, and the like.The disclosure may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotememory storage devices. Generally, program modules include routines,programs, components, data structures, and other types of structuresthat perform particular tasks or implement particular abstract datatypes.

1-20. (canceled)
 21. A method for updating presence information for adocument, the method comprising: receiving, at a first client, shortterm check out metadata by opening the document, the short term checkout metadata comprising presence metadata; adding a transition ID forthe first client to the short term check out metadata; sending thetransition ID to a transition table stored in a cache; determining thatpresence information in the cache has not been updated by a secondclient in a configurable window of time; and upon determining that thepresence information has not been updated, deleting the presenceinformation of the second client.
 22. The method of claim 21, whereinadding the transition ID for the first client switches the document to amulti client editing mode.
 23. The method of claim 21, wherein deletingthe presence information of the second client indicates that thedocument is in a single client editing mode.
 24. The method of claim 21,further comprising: deleting the transition ID from the transitiontable.
 25. The method of claim 21, further comprising: pinging theserver to determine whether a new transition ID has been added to thetransition table.
 26. The method of claim 25, further comprisingreceiving a ping from the server indicating that the document is stillin the single client editing mode.
 27. The method of claim 25, furthercomprising receiving a ping from the server indicating that the documenthas switched to the multi client editing mode.
 28. One or more computerstorage media not consisting of a propagated data signal and havingcomputer-executable instructions that, when executed, provide a methodfor updating presence information for a document, the method comprising:receiving, at a first client, short term check out metadata by openingthe document, the short term check out metadata comprising presencemetadata; adding a transition ID for the first client to the short termcheck out metadata; sending the transition ID to a transition tablestored in a cache; determining that presence information in the cachehas not been updated by a second client in a configurable window oftime; and upon determining that the presence information has not beenupdated, deleting the presence information of the second client.
 29. Theone or more computer storage media of claim 28, wherein adding thetransition ID for the first client switches the document to a multiclient editing mode.
 30. The one or more computer storage media of claim28, wherein deleting the presence information of the second clientindicates that the document is in a single client editing mode.
 31. Theone or more computer storage media of claim 28, further comprising:deleting the transition ID from the transition table.
 32. The one ormore computer storage media of claim 28, further comprising: pinging theserver to determine whether a new transition ID has been added to thetransition table.
 33. The one or more computer storage media of claim32, further comprising receiving a ping from the server indicating thatthe document is still in the single client editing mode.
 34. The one ormore computer storage media of claim 32, further comprising receiving aping from the server indicating that the document has switched to themulti client editing mode.
 35. A computer system comprising: aprocessor; and a memory communicatively coupled to the processor, thememory having computer-executable instructions that when executed by theprocessor, provide a method for updating presence information for adocument, the method comprising: receiving, at a first client, shortterm check out metadata by opening the document, the short term checkout metadata comprising presence metadata; adding a transition ID forthe first client to the short term check out metadata; sending thetransition ID to a transition table stored in a cache; determining thatpresence information in the cache has not been updated by a secondclient in a configurable window of time; and upon determining that thepresence information has not been updated, deleting the presenceinformation of the second client.
 36. The computer system of claim 35,wherein adding the transition ID for the first client switches thedocument to a multi client editing mode.
 37. The computer system ofclaim 35, wherein deleting the presence information of the second clientindicates that the document is in a single client editing mode.
 38. Thecomputer system of claim 35, further comprising: deleting the transitionID from the transition table.
 39. The computer system of claim 35,further comprising: pinging the server to determine whether a newtransition ID has been added to the transition table.
 40. The computersystem of claim 39, further comprising receiving a ping from the serverindicating that the document has switched to the multi client editingmode.